package com.knowledge.plus.java8.函数式接口;

/**
 * 自定义函数式接口:
 * 【一个接口中有且只有一个抽象方法（但是可以有多个非抽象方法default static的接口），不包括 equals 这类在object中已经定义的方法，
 * 为了明确表示一个接口是函数式接口，防止别人在接口中添加其他抽象方法，我们可以给接口定义的时候添加一个 @FunctionalInterface 注解】
 * -
 * https://blog.csdn.net/qq_33204709/article/details/129207941
 * https://blog.csdn.net/weixin_44079370/article/details/121956764
 *
 * @author TPF
 * @since 2023/12/5
 */
// 注解 @FunctionalInterface 要求接口有且只有一个抽象方法，但是可以有多个非抽象方法（default, static）的接口
// 如果自定义一个符合规范的函数式接口，也可以不加@FunctionalInterface注解。此注解只是起到一个提示编译器进行规范检查的作用
@FunctionalInterface
interface ADefinition<T> {

    // 定义一个抽象方法
    String myMethod(T source);

    // 可以有默认方法
    default void defaultMethod() {
        System.out.println("Default method implementation");
    }

    // 可以有静态方法
    static void staticMethod() {
        System.out.println("Static method");
    }

}